Raspberry Pi Picoで試すFuzix OS
https://scrapbox.io/files/6757b3d98bea765a1bf39040.svg
むとうたけし(武藤武士(wǔ téng wǔ shì)) a.k.a 610t はじめに
いま、Fuzix OSが熱いです!!
なんと、Raspberry Pi Picoでもfuzixが動くということで、実際に動かしてみました。
Fuzix OSとは?
2024/08/01現在のバージョンは0.5
色々な8bit/16bitのCPUで動くUnixのようなもの
FuzixOS: Because Small Is Beautiful
めちゃくちゃ多くの対応プラットフォーム(詳しくは、公式トップページを確認)
例: Z80(MSX), ESP8266, 6800, 8086, ARM(RP2040), PDP11, ...
ライセンスは、GPL v2 + LGPL(ライブラリ部分)
100個ほどのコマンドが/binや/usr/binなどに存在
SYS3 - SYS5.x + 少しのPOSIX対応
BCPL, CC, asm, Forthなどもある
Raspberry Pi Picoで簡単にFuzix OSを試す
filesystem.uf2を書き込む
バージョンは0.3.1とちょっと古い
Pico以外のハードウエア(SDなど)は不要です。
code:shell
% sudo cu -l /dev/cu.usbmodem0000000000001 -s 115200
Connected.
Current time is 23:37:29
Enter new time: 14:00:00
^ ^
n n Fuzix 0.3.1
@<
Welcome to Fuzix
m m
login: root
Welcome to FUZIX.
コマンド一覧: /usr/binは無い
code:shell
# cd /bin
# ls|wc -l
115
# for f in *
do
echo -n ${f}" "
done
ac accton at atrun banner basename bd blkdiscard cal cat chgrp chmod chown cksum cmp col comm cp cron crypt cut date dc dd decomp16 deroff df diff diff3 diffh dirname dosread du echo ed env false fdisk fforth fgrep free fsck fsck-fuzix grep head id join kill levee ll ln logname look ls makekey man marksman mesg mkdir mkfifo mkfs mknod more mount mv newgrp od pagesize passwd pg pr printenv prtroot ps ptx pwd reboot remount rev rm rmdir setdate sh sleep sort split ssh stty su sum swapon sync tail tar tee test time touch tr true tsort tty umount uniq uptime uud uue wall wc which who whoami write xargs yes
設定ファイル一覧
code:shell
# ls /etc
inittab
issue
motd
mtab
passwd
rc
termcap
Raspberry Pi Pico SDK開発環境を準備する
今回は、SDKを/opt/pico-sdkにインストールしました。
$ sudo apt install gcc cmake gcc-arm-none-eabi libnewlib-arm-none-eabi build-essential
$ cd /opt/
$ cd pico-sdk
$ git submodule update --init
SDKを利用するときには、以下のように環境変数PICO_SDK_PATHを定義する必要があります。
$ export PICO_SDK_PATH=/opt/pico-sdk
Fuzixのbuild方法
Pico用のFuzixには、以下の二つのバージョンがあるようです。最近はメンテナンスされていないようで、少し古い状態になっています。
(2024/12/11追記)
前者は手順通りにやってもうまく動かすことができませんでした。
$ cd FUZIX/Kernel/platform-rpipico/
$ make world -j
$ make image -j
(2024/12/11追記)
公式リポジトリの場合は、ディレクトリ構成が変わっているため、以下の手順になります。
$ cd FUZIX/Kernel/platform/platform-rpipico/
$ make world -j
$ make image -j
この手順で、バージョン0.5を動かすことができました。
この手順で以下のようなファイルが生成されます。
SDカード無しで使う場合には、filesystem.uf2を使います。
code:files.sh
$ ls -l build/fuzix.* filesystem.*
-rwxr-xr-x 1 mutoh mutoh 73076 Dec 9 08:07 build/fuzix.bin
-rw-r--r-- 1 mutoh mutoh 1296876 Dec 9 08:07 build/fuzix.dis
-rwxr-xr-x 1 mutoh mutoh 843128 Dec 9 08:07 build/fuzix.elf
-rw-r--r-- 1 mutoh mutoh 550003 Dec 9 08:07 build/fuzix.elf.map
-rw-r--r-- 1 mutoh mutoh 205630 Dec 9 08:07 build/fuzix.hex
-rw-r--r-- 1 mutoh mutoh 146432 Dec 9 08:07 build/fuzix.uf2
-rw-r--r-- 1 mutoh mutoh 1999284 Dec 9 08:08 filesystem.elf
-rw-r--r-- 1 mutoh mutoh 1998848 Dec 9 08:08 filesystem.ftl
-rw------- 1 mutoh mutoh 1304064 Dec 9 08:08 filesystem.img
-rw-r--r-- 1 mutoh mutoh 3997696 Dec 9 08:08 filesystem.uf2
動作の様子は、以下のようになります。バージョン番号などが表示されないため、どのバージョンが動いているのかは不明です。
code:shell
% sudo cu -l /dev/cu.usbmodem0000000000001 -s 115200
Connected.
Current time is 23:09:11
Enter new time:
login: root
Welcome to FUZIX.
おわりに
Raspberry Pi Picoでfuzixを動かしてみました。
簡単に動かすには、バイナリーイメージを利用するのが楽です。
wiznetリポジトリのバージョンは、buildもでき、実際に動かすこともできました。
あなたも、Raspberry Pi Picoでfuzixしてみませんか?